home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1833 / 1833.xpi / chrome / yoono.jar / content / yoono / dialogs / search.js < prev    next >
Text File  |  2009-12-16  |  3KB  |  104 lines

  1. const REGULAR_TYPE   = "http://home.netscape.com/NC-rdf#Bookmark";
  2.  
  3. var gNode = window.arguments[0].node;
  4.  
  5. var engines = {
  6.    'google' : {
  7.       max : 32,
  8.       parseUrl : function (str) {
  9.          return str;
  10.       },
  11.       mkurl : function (request, list) {
  12.          var l = Math.min(list.length, engines.google.max);
  13.          var str = ' site:' + list[0];
  14.           for (var i = 1; i < l; i++) {
  15.              str += ' OR site:' + list[i];
  16.           }
  17.           var url = 'http://www.google.com/search?q=' + request + str;
  18.          return encodeURI(url);
  19.       }
  20.    },
  21.    'yahoo' : {
  22.       max:32,
  23.       parseUrl : function(str) {
  24.          return getHostFromUrl(str);
  25.       },
  26.       mkurl : function (request, list) {
  27.          var l = Math.min(list.length, engines.yahoo.max);
  28.          var str = list[0];
  29.           for (var i = 1; i < l; i++) {
  30.              str += ' OR ' + list[i];
  31.           }
  32.           var url = 'http://fr.search.yahoo.com/search?va=' + request + '&vs=' + str;
  33.          return encodeURI(url);
  34.       }
  35.    }
  36. }
  37.  
  38. function search() {
  39.    var value = document.getElementById("yoono-search-input").engine;
  40.    var engine = engines[value];
  41.    var request = document.getElementById("yoono-search-input").value;
  42.  
  43.    var urllist = getUrlList(engine);
  44.    var target = engine.mkurl(request, urllist);
  45.  
  46.    var where = "tab";
  47.    // need try here :
  48.    // see https://bugzilla.mozilla.org/show_bug.cgi?id=330036
  49.    try {
  50.    window.opener.openUILinkIn(target, where);
  51.    } catch (e) {}
  52. }
  53.  
  54. function getUrlList(engine) {
  55.    var obj = {
  56.       list : [],
  57.       count : 0,
  58.       max : engine.max,
  59.       parseUrl : engine.parseUrl,
  60.       onNode : function (node) {
  61.          if ((node.isBookmark()) && (this.count < this.max)) {
  62.             var addr = this.parseUrl(node.getUrl());
  63.             if (addr) {
  64.                this.list.push(addr);
  65.                this.count++;
  66.             }
  67.          }
  68.      }
  69.    }
  70.    gNode.traverseNode(obj, 'force');
  71.    return obj.list;
  72. }
  73.  
  74. function countBkms(node) {
  75.    var obj = {
  76.       count : 0,
  77.       onNode : function (node) {
  78.          if ((node.getType() == REGULAR_TYPE)) {
  79.                this.count++;
  80.          }
  81.       }
  82.    }
  83.    node.traverseNode(obj, 'force');
  84.    return obj.count;
  85. }
  86.  
  87. function switchengine(event) {
  88.     var menuitem = event.target;
  89.     var button = menuitem.parentNode.parentNode;
  90.     button.setAttribute('src', menuitem.getAttribute('image'));
  91.     button.setAttribute('value', menuitem.getAttribute('value'));
  92. }
  93.  
  94. function init() {
  95.    var strbundle=document.getElementById("yoono-strings");
  96.    var desc = strbundle.getString("search.desc");
  97.    var count = countBkms(gNode);
  98.    desc = desc.replace('%1', count);
  99.    var text = document.createTextNode(desc);
  100.    var descEl = document.getElementById("yoono-search-description");
  101.    descEl.appendChild(text);
  102.    centerWindow();
  103. }
  104.